package com.jhgsys.internal.incentive.service;

import com.jhgsys.internal.common.exception.FebsException;
import com.jhgsys.internal.incentive.dto.IncentiveGoodsOrderDto;
import com.jhgsys.internal.incentive.entity.IncentiveGoodsOrder;
import com.jhgsys.internal.common.entity.QueryRequest;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 安全奖i订单 Service接口
 *
 * @author zhangwei
 * @date 2024-09-02 11:28:06
 */
public interface IIncentiveGoodsOrderService extends IService<IncentiveGoodsOrder> {
    /**
     * 查询（分页）
     * @author zhangwei
     * @date 2024-09-02 11:28:06
     * @param request QueryRequest
     * @param incentiveGoodsOrderDto incentiveGoodsOrder
     * @return IPage<IncentiveGoodsOrder>
     */
    IPage<IncentiveGoodsOrderDto> findIncentiveGoodsOrderPage(QueryRequest request, IncentiveGoodsOrderDto incentiveGoodsOrderDto);

    /**
     * 查询（所有）
     * @author zhangwei
     * @date 2024-09-02 11:28:06
     * @param incentiveGoodsOrder incentiveGoodsOrder
     * @return List<IncentiveGoodsOrder>
     */
    List<IncentiveGoodsOrder> findIncentiveGoodsOrderList(IncentiveGoodsOrder incentiveGoodsOrder);

    /**
    * 根据ID查询
    * @author zhangwei
    * @date 2024-09-02 11:28:06
    * @param id
    * @return IncentiveGoodsOrder
    */
    IncentiveGoodsOrder findIncentiveGoodsOrderById(String id);

    /**
     * 新增
     * @author zhangwei
     * @date 2024-09-02 11:28:06
     * @param incentiveGoodsOrderDto incentiveGoodsOrder
     */
    void createIncentiveGoodsOrder(IncentiveGoodsOrderDto incentiveGoodsOrderDto) throws FebsException;

    /**
     * 安全奖励订单
     * @author zhangwei
     * @date 2024-09-02 11:28:06
     * @param incentiveGoodsOrderDto incentiveGoodsOrder
     */
    void createPeaceIncentiveGoodsOrder(IncentiveGoodsOrderDto incentiveGoodsOrderDto) throws FebsException;

    /**
     * 发放
     * @author zhangwei
     * @date 2024-09-02 11:28:06
     * @param incentiveGoodsOrderDto incentiveGoodsOrder
     */
    void handOutIncentiveGoodsOrder(IncentiveGoodsOrderDto incentiveGoodsOrderDto) throws FebsException;

    /**
     * 取消兑现
     * @author zhangwei
     * @date 2024-09-02 11:28:06
     * @param incentiveGoodsOrderDto incentiveGoodsOrder
     */
    void cancelIncentiveGoodsOrder(IncentiveGoodsOrderDto incentiveGoodsOrderDto) throws FebsException;

    /**
     * 修改
     * @author zhangwei
     * @date 2024-09-02 11:28:06
     * @param incentiveGoodsOrder incentiveGoodsOrder
     */
    void updateIncentiveGoodsOrder(IncentiveGoodsOrder incentiveGoodsOrder);

    /**
     * 逻辑删除
     * @author zhangwei
     * @date 2024-09-02 11:28:06
     * @param incentiveGoodsOrder incentiveGoodsOrder
     * @param incentiveGoodsOrderIds incentiveGoodsOrderIds
     */
    void deleteIncentiveGoodsOrder(IncentiveGoodsOrder incentiveGoodsOrder,String incentiveGoodsOrderIds);

    /**
    * 物理删除
    * @author zhangwei
    * @date 2024-09-02 11:28:06
    * @param incentiveGoodsOrderIds incentiveGoodsOrderIds
    */
    void physicallyDeleteIncentiveGoodsOrder(String incentiveGoodsOrderIds);

    public String createOrderNo(String tenantId) throws FebsException;
}
